import router from '@/router/index'
import store from '@/store/index'
const whiteList = ['/login', '/404']
// import { variablesRoutes } from '@/router/index' // 用于路由筛选
router.beforeEach(async(to, from, next) => {
  // 路由守卫 可以处理页面跳转
  // 全局（访问所有路由）  进入之前
  const token = store.getters.token
  if (token) {
  // 1.有token
  // 1.判断进入的是否为登录页面
    if (to.path === '/login') {
      // 1.1如果是登录页面直接跳转主页面
      next('/')
    } else {
      // 路由跳转会重新发送请求 判断vuex里面是否有用户资料，有则阻止，没有则需要发送请求
      if (!store.getters.useInfo.id) {
        // 获取用户资料 ，存储到vuex
        const res = await store.dispatch('user/getUserInfo')
        // 进行路由筛选
        // 1.路由数组 router/index.js
        // console.log(variablesRoutes, '动态路由')
        // 用户拥有的权限数组 store/user
        // console.log(res.roles.menus, '权限')
        // routes+静态路由=所有路由
        // const routes = variablesRoutes.filter((item) => { return res.roles.menus.includes(item.name) })
        // // 动态追加路由
        // router.addRoutes(routes)
        // // 必须要加，是路由已知的bug
        await store.dispatch('permission/filterRouter', res.roles)
        // store.dispatch返回值是promise，为了防止意外，前面加await
        next(to.path)
      }
      // 1.2如果不是直接放行
      next()
    }
  } else {
    // 2.没有token
    if (whiteList.includes(to.path)) {
      // 1 判断访问的是不是白名单里面的 允许进入 next()
      next()
    } else {
      // 2.访问的不是登录页面不是404 强制退回登录页面
      next('/login')
    }
  }
})
